home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / lib2to3 / fixes / fix_imports.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  5.0 KB  |  122 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Fix incompatible imports and module references.'''
  5. from  import fixer_base
  6. from fixer_util import Name, attr_chain
  7. MAPPING = {
  8.     'StringIO': 'io',
  9.     'cStringIO': 'io',
  10.     'cPickle': 'pickle',
  11.     '__builtin__': 'builtins',
  12.     'copy_reg': 'copyreg',
  13.     'Queue': 'queue',
  14.     'SocketServer': 'socketserver',
  15.     'ConfigParser': 'configparser',
  16.     'repr': 'reprlib',
  17.     'FileDialog': 'tkinter.filedialog',
  18.     'tkFileDialog': 'tkinter.filedialog',
  19.     'SimpleDialog': 'tkinter.simpledialog',
  20.     'tkSimpleDialog': 'tkinter.simpledialog',
  21.     'tkColorChooser': 'tkinter.colorchooser',
  22.     'tkCommonDialog': 'tkinter.commondialog',
  23.     'Dialog': 'tkinter.dialog',
  24.     'Tkdnd': 'tkinter.dnd',
  25.     'tkFont': 'tkinter.font',
  26.     'tkMessageBox': 'tkinter.messagebox',
  27.     'ScrolledText': 'tkinter.scrolledtext',
  28.     'Tkconstants': 'tkinter.constants',
  29.     'Tix': 'tkinter.tix',
  30.     'Tkinter': 'tkinter',
  31.     'markupbase': '_markupbase',
  32.     '_winreg': 'winreg',
  33.     'thread': '_thread',
  34.     'dummy_thread': '_dummy_thread',
  35.     'dbhash': 'dbm.bsd',
  36.     'dumbdbm': 'dbm.dumb',
  37.     'dbm': 'dbm.ndbm',
  38.     'gdbm': 'dbm.gnu',
  39.     'xmlrpclib': 'xmlrpc.client',
  40.     'DocXMLRPCServer': 'xmlrpc.server',
  41.     'SimpleXMLRPCServer': 'xmlrpc.server',
  42.     'httplib': 'http.client',
  43.     'htmlentitydefs': 'html.entities',
  44.     'HTMLParser': 'html.parser',
  45.     'Cookie': 'http.cookies',
  46.     'cookielib': 'http.cookiejar',
  47.     'BaseHTTPServer': 'http.server',
  48.     'SimpleHTTPServer': 'http.server',
  49.     'CGIHTTPServer': 'http.server',
  50.     'commands': 'subprocess',
  51.     'UserString': 'collections',
  52.     'UserList': 'collections',
  53.     'urlparse': 'urllib.parse',
  54.     'robotparser': 'urllib.robotparser' }
  55.  
  56. def alternates(members):
  57.     return '(' + '|'.join(map(repr, members)) + ')'
  58.  
  59.  
  60. def build_pattern(mapping = MAPPING):
  61.     mod_list = []([ "module_name='%s'" % key for key in mapping ])
  62.     bare_names = alternates(mapping.keys())
  63.     yield "name_import=import_name< 'import' ((%s) |\n               multiple_imports=dotted_as_names< any* (%s) any* >) >\n          " % (mod_list, mod_list)
  64.     []
  65.     yield "import_from< 'from' (%s) 'import' ['(']\n              ( any | import_as_name< any 'as' any > |\n                import_as_names< any* >)  [')'] >\n          " % mod_list
  66.     ' | '.join
  67.     yield "import_name< 'import' (dotted_as_name< (%s) 'as' any > |\n               multiple_imports=dotted_as_names<\n                 any* dotted_as_name< (%s) 'as' any > any* >) >\n          " % (mod_list, mod_list)
  68.     yield "power< bare_with_attr=(%s) trailer<'.' any > any* >" % bare_names
  69.  
  70.  
  71. class FixImports(fixer_base.BaseFix):
  72.     order = 'pre'
  73.     mapping = MAPPING
  74.     run_order = 6
  75.     
  76.     def build_pattern(self):
  77.         return '|'.join(build_pattern(self.mapping))
  78.  
  79.     
  80.     def compile_pattern(self):
  81.         self.PATTERN = self.build_pattern()
  82.         super(FixImports, self).compile_pattern()
  83.  
  84.     
  85.     def match(self, node):
  86.         match = super(FixImports, self).match
  87.         results = match(node)
  88.         if results:
  89.             if 'bare_with_attr' not in results and []([ match(obj) for obj in attr_chain(node, 'parent') ]):
  90.                 return False
  91.             return results
  92.         return False
  93.  
  94.     
  95.     def start_tree(self, tree, filename):
  96.         super(FixImports, self).start_tree(tree, filename)
  97.         self.replace = { }
  98.  
  99.     
  100.     def transform(self, node, results):
  101.         import_mod = results.get('module_name')
  102.         if import_mod:
  103.             new_name = self.mapping[import_mod.value]
  104.             import_mod.replace(Name(new_name, prefix = import_mod.get_prefix()))
  105.             if 'name_import' in results:
  106.                 self.replace[import_mod.value] = new_name
  107.             
  108.             if 'multiple_imports' in results:
  109.                 results = self.match(node)
  110.                 if results:
  111.                     self.transform(node, results)
  112.                 
  113.             
  114.         else:
  115.             bare_name = results['bare_with_attr'][0]
  116.             new_name = self.replace.get(bare_name.value)
  117.             if new_name:
  118.                 bare_name.replace(Name(new_name, prefix = bare_name.get_prefix()))
  119.             
  120.  
  121.  
  122.